#ifndef _CLONEABLE_H_
#define _CLONEABLE_H_
#include <memory>

namespace SEngine
{
    template<typename T>
    class Cloneable
    {
    public:
        virtual ~Cloneable() = default;
        std::unique_ptr<T> CloneImpl() { return std::make_unique<T>(*static_cast<T*>(this)); }
    };
} // namespace SEngine



#endif